home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / glibc108.gz / glibc108 / glibc-1.08.1 / time / time.h < prev    next >
C/C++ Source or Header  |  1994-01-27  |  6KB  |  204 lines

  1. /* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
  2. This file is part of the GNU C Library.
  3.  
  4. The GNU C Library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Library General Public License as
  6. published by the Free Software Foundation; either version 2 of the
  7. License, or (at your option) any later version.
  8.  
  9. The GNU C Library is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12. Library General Public License for more details.
  13.  
  14. You should have received a copy of the GNU Library General Public
  15. License along with the GNU C Library; see the file COPYING.LIB.  If
  16. not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
  17. Cambridge, MA 02139, USA.  */
  18.  
  19. /*
  20.  *    ANSI Standard: 4.12 DATE and TIME    <time.h>
  21.  */
  22.  
  23. #ifndef    _TIME_H
  24.  
  25. #if    !defined(__need_time_t) && !defined(__need_clock_t)
  26. #define    _TIME_H        1
  27. #include <features.h>
  28.  
  29. __BEGIN_DECLS
  30.  
  31. #endif
  32.  
  33. #ifdef    _TIME_H
  34. /* Get size_t and NULL from <stddef.h>.  */
  35. #define    __need_size_t
  36. #define    __need_NULL
  37. #include <stddef.h>
  38. #endif /* <time.h> included.  */
  39.  
  40.  
  41.  
  42. #ifdef    _TIME_H
  43. /* Processor clock ticks per second.  */
  44. #define    CLOCKS_PER_SEC    1    /* ??? */
  45.  
  46. #ifdef    __USE_POSIX
  47. #define    CLK_TCK        60    /* ??? */
  48. #endif
  49.  
  50. #endif /* <time.h> included.  */
  51.  
  52.  
  53. #if    !defined(__clock_t_defined) &&            \
  54.     (defined(_TIME_H) || defined(__need_clock_t))
  55. #define    __clock_t_defined    1
  56.  
  57. /* Returned by `clock'.  */
  58. typedef long int clock_t;
  59.  
  60. #endif /* clock_t not defined and <time.h> or need clock_t.  */
  61. #undef    __need_clock_t
  62.  
  63. #if    !defined(__time_t_defined) &&            \
  64.     (defined(_TIME_H) || defined(__need_time_t))
  65. #define    __time_t_defined    1
  66.  
  67. #include <gnu/types.h>
  68.  
  69. /* Returned by `time'.  */
  70. typedef __time_t time_t;
  71.  
  72. #endif /* time_t not defined and <time.h> or need time_t.  */
  73. #undef    __need_time_t
  74.  
  75.  
  76. #ifdef    _TIME_H
  77. /* Used by other time functions.  */
  78. struct tm
  79. {
  80.   int tm_sec;            /* Seconds.    [0-61] (2 leap seconds) */
  81.   int tm_min;            /* Minutes.    [0-59] */
  82.   int tm_hour;            /* Hours.    [0-23] */
  83.   int tm_mday;            /* Day.        [1-31] */
  84.   int tm_mon;            /* Month.    [0-11] */
  85.   int tm_year;            /* Year    - 1900.  */
  86.   int tm_wday;            /* Day of week.    [0-6] */
  87.   int tm_yday;            /* Days in year.[0-365]    */
  88.   int tm_isdst;            /* DST.        [-1/0/1]*/
  89.   long int tm_gmtoff;        /* Seconds west of UTC.  */
  90.   __const char *tm_zone;    /* Timezone abbreviation.  */
  91. };
  92.  
  93. #endif /* <time.h> included.  */
  94.  
  95.  
  96. #ifdef    _TIME_H
  97. /* Time used by the program so far (user time + system time).
  98.    The result / CLOCKS_PER_SECOND is program time in seconds.  */
  99. extern clock_t clock __P ((void));
  100.  
  101. /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
  102. extern time_t time __P ((time_t *__timer));
  103.  
  104. /* Return the difference between TIME1 and TIME0.  */
  105. extern __CONSTVALUE double difftime __P ((time_t __time1, time_t __time0));
  106.  
  107. /* Return the `time_t' representation of TP and normalize TP.  */
  108. extern time_t mktime __P ((struct tm *__tp));
  109.  
  110. /* Subroutine of `mktime'.  Return the `time_t' representation of TP and
  111.    normalize TP, given that a `struct tm *' maps to a `time_t' as performed
  112.    by FUNC.  */
  113. extern time_t _mktime_internal __P ((struct tm *__tp,
  114.                      struct tm *(*__func) (const time_t *)));
  115.  
  116.  
  117. /* Format TP into S according to FORMAT.
  118.    Write no more than MAXSIZE characters and return the number
  119.    of characters written, or 0 if it would exceed MAXSIZE.  */
  120. extern size_t strftime __P ((char *__s, size_t __maxsize,
  121.              __const char *__format, __const struct tm *__tp));
  122.  
  123.  
  124. /* Return the `struct tm' representation of *TIMER
  125.    in Universal Coordinated Time (aka Greenwich Mean Time).  */
  126. extern struct tm *gmtime __P ((__const time_t *__timer));
  127.  
  128. /* Return the `struct tm' representation
  129.    of *TIMER in the local timezone.  */
  130. extern struct tm *localtime __P ((__const time_t *__timer));
  131.  
  132. /* Return the `struct tm' representation of *TIMER,
  133.    offset OFFSET seconds east of Universal Coordinated Time.  */
  134. extern struct tm *__offtime __P ((__const time_t *__timer,
  135.                   long int __offset));
  136.  
  137. /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
  138.    that is the representation of TP in this format.  */
  139. extern char *asctime __P ((__const struct tm *__tp));
  140.  
  141. /* Equivalent to `asctime(localtime(timer))'.  */
  142. extern char *ctime __P ((__const time_t *__timer));
  143.  
  144.  
  145. /* Defined in localtime.c.  */
  146. extern char *__tzname[2];    /* Current timezone names.  */
  147. extern int __daylight;        /* If it is daylight savings time.  */
  148. extern long int __timezone;    /* Seconds west of UTC.  */
  149.  
  150. /* Set time conversion information from the TZ environment variable.
  151.    If TZ is not defined, a locale-dependent default is used.  */
  152. extern void __tzset __P ((void));
  153.  
  154. #ifdef    __USE_POSIX
  155. /* Same as above.  */
  156. extern char *tzname[2];
  157.  
  158. /* Return the maximum length of a timezone name.
  159.    This is what `sysconf (_SC_TZNAME_MAX)' does.  */
  160. extern long int __tzname_max __P ((void));
  161.  
  162. extern void tzset __P ((void));
  163. #ifdef    __OPTIMIZE__
  164. #define    tzset()    __tzset()
  165. #endif /* Optimizing.  */
  166. #endif
  167.  
  168. #ifdef    __USE_SVID
  169. extern int daylight;
  170. extern long int timezone;
  171.  
  172. /* Set the system time to *WHEN.
  173.    This call is restricted to the superuser.  */
  174. extern int stime __P ((__const time_t *__when));
  175. #endif
  176.  
  177.  
  178. /* Nonzero if YEAR is a leap year (every 4 years,
  179.    except every 100th isn't, and every 400th is).  */
  180. #define    __isleap(year)    \
  181.   ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
  182.  
  183.  
  184. #ifdef __USE_MISC
  185. /* Miscellaneous functions many Unices inherited from the public domain
  186.    localtime package.  These are included only for compatibility.  */
  187.  
  188. /* Like `mktime', but for TP represents Universal Time, not local time.  */
  189. extern time_t timegm __P ((struct tm *__tp));
  190.  
  191. /* Another name for `mktime'.  */
  192. extern time_t timelocal __P ((struct tm *__tp));
  193.  
  194. /* Return the number of days in YEAR.  */
  195. extern int dysize __P ((int __year));
  196. #endif
  197.  
  198.  
  199. __END_DECLS
  200.  
  201. #endif /* <time.h> included.  */
  202.  
  203. #endif /* <time.h> not already included.  */
  204.